The naming of your source files is cheap since it doesn't effect your source code. Your substantial investment is your source code. Therefore the names of your header files must be chosen with much greater care. The preprocessor will accept whatever name you give it in the #include line, but whatever you choose, you will want to plan on sticking with it for a long time, since it is more expensive to change (though certainly not as difficult as, say, porting to a new language).
Almost all vendors ship their C++ header files using a '.h' extension, which means you can reliably do things like:
#include <iostream.h>
Well, *almost*. There are one or two vendors that provide <iostream.hpp>. A few #ifdef's, suffice. There are also tools that recognize the language of a file by its extension rather than its contents (gnu emacs looks in the first few lines for a string magic token in a comment identifying the language). Some of these extension-based tools use '.hh' or '.H' to identify C++ headers, however most of the world is leaning toward '.h' for C++ headers. C++ specific information in a '.h' that is to be shared with a C compiler can be #ifdef'd using:
#ifdef __cplusplus /*all C++ compilers define __cplusplus*/